package designpatterns.template.nomal;

/**
 * 制作豆浆
 *
 */
public abstract class AbstractSoyaMilk {
    /**
     * 制作豆浆的流程
     * final:不让子类覆盖流程
     */
    public final void make() {
        // 选择材料
        select();

        // 添加配料 不同豆浆加的配料不同让子类决定添加什么
        add();

        // 浸泡
        soak();

        // 打浆
        beat();
    }

    /**
     * 选择材料
     */
    private void select() {
        System.out.println("---》选择大豆...");
    }

    /**
     * 添加配料
     */
    public abstract void add();

    /**
     * 浸泡
     */
    private void soak() {
        System.out.println("---》浸泡30分钟...");
    }

    /**
     * 打浆
     */
    private void beat() {
        System.out.println("---》打浆，完成一杯豆浆。");
    }

}
